{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sympy import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The autoreload extension is already loaded. To reload it, use:\n",
      "  %reload_ext autoreload\n"
     ]
    }
   ],
   "source": [
    "from sympy import *\n",
    "from sympy.abc import x,y,z,t,k,l,n,m,p,q\n",
    "\n",
    "from sys import path\n",
    "path.append(\"/Users/huangzhiming/Documents/python学习/packaging_tutorial/src\")\n",
    "\n",
    "%load_ext autoreload \n",
    "%autoreload 1\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "%aimport function_calculator_package.extreme_points\n",
    "%aimport quadratic_function.utils\n",
    "%aimport quadratic_function.hyperbola\n",
    "%aimport basic_package.utils\n",
    "\n",
    "from function_calculator_package.extreme_points import *\n",
    "from quadratic_function.quadraticfunction import QuadraticFunction\n",
    "from quadratic_function.utils import *\n",
    "from quadratic_function.hyperbola import Hyperbola\n",
    "from basic_package.utils import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "q=QuadraticFunction(Point(4,0),Point(1,15/4),Point(0,0))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{5 x^{2}}{4} + 5 x$"
      ],
      "text/plain": [
       "-5*x**2/4 + 5*x"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q.equation()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 5 - \\frac{5 \\left(x - 2\\right)^{2}}{4}$"
      ],
      "text/plain": [
       "5 - 5*(x - 2)**2/4"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q.symmetry_equation()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2$"
      ],
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q.symmetry"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=5*(1-x/4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{5}{2}$"
      ],
      "text/plain": [
       "5/2"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr.subs(x,2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left\\{2 - \\sqrt{2}, \\sqrt{2} + 2\\right\\}$"
      ],
      "text/plain": [
       "{2 - sqrt(2), sqrt(2) + 2}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "solveset(q.equation(x)-5/S(2),x,Reals)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left\\{2 - \\sqrt{6}, 2 + \\sqrt{6}\\right\\}$"
      ],
      "text/plain": [
       "{2 - sqrt(6), 2 + sqrt(6)}"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "solveset(q.equation(x)+5/S(2),x,Reals)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "check=Abs(q.equation(x)-expr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left|{\\frac{5 x^{2}}{4} - \\frac{25 x}{4} + 5}\\right|$"
      ],
      "text/plain": [
       "Abs(5*x**2/4 - 25*x/4 + 5)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "check"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnEAAAHTCAYAAABIsU5AAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABS9klEQVR4nO3dd1hUV8IG8PdOgaEOSJOmoCioWBDsPbaoSUyy6a5JNm3Ti5vNZ8om2ZKYbHo1dVM2xWyipseu2AsKiiCIAoJI70UGZuZ+fwxgVFRAhnPnzvt7nnn2kQzweveKr+fcc44ky7IMIiIiInIoGtEBiIiIiKjzWOKIiIiIHBBLHBEREZEDYokjIiIickAscUREREQOiCWOiIiIyAGxxBERERE5IFWUOFmWUVNTA255R0RERM5CFSWutrYWRqMRtbW1oqMQERER9QhVlDgiIiIiZ8MSR0REROSAWOKIiIiIHBBLHBEREZEDYokjIiIickAscUREREQOiCWOiIiIyAGxxBERERE5IJY4IiIiIgfEEkdERETkgFjiiIiIiBwQSxwRERGRA2KJIyIiInJALHFEREREDogljoiIiMgBKaLEPfvss5Ak6bRX7969RcciIiIiUiyd6ACthgwZgnXr1rX9WqvVCkxDREREpGyKKXE6na5Lo29Wq4y0gmoAgCzL3R2LiIiISJEUMZ0KAFlZWQgJCUFkZCRuuOEGZGdnn/O9JpMJNTU1qKmpQXlVNW7+z24AwOHi2p6KS0RERCSUIkrcmDFj8Pnnn2P16tX48MMPUVRUhPHjx6O8vLzd9y9ZsgRGoxFGoxGBfr6ozEoCAGw9UtaTsYmIiIiEkWQFzkHW19ejf//+eOyxx7Bo0aKz/rvJZILJZGr79X8SD+ORK0bh6tfXYvlDM3oyKhEREZEQinkm7vc8PDwwdOhQZGVltfvfXV1d4erq2vbr6bGhAIDkvCrUmczwdFXkb4uIiIio2yhiOvVMJpMJhw4dQnBwcIfe39fPAwBgtsrYxilVIiIicgKKKHGPPvooEhMTkZOTg127duGaa65BTU0Nbrnllk5/rcTDpXZISERERKQsiph3PH78OG688UaUlZUhICAAY8eOxc6dO9G3b99Of63EzFLIsgxJkuyQlIiIiEgZFFHili1b1i1fR6/ToKDqJI6W1iEq0KtbviYRERGREiliOrW7JPT1BQBsyuSUKhEREambqkrcxCg/AHwujoiIiNRPXSVuQAAAYFd2BRqazILTEBEREdmPqkpcP38PhPm6oclixc7s9k97ICIiIlIDVZU4SZIwZaBtNI7PxREREZGaqarEAcDU6EAAfC6OiIiI1E11JW5cfz/otRKOlTcgp6xedBwiIiIiu1BdifN01WFURC8AQGJmieA0RERERPahuhIH4NRzcZxSJSIiIpVSZYlrfS5uZ3Y5GpstgtMQERERdT9VlriBQZ7o7W1AY7MVu3IqRMchIiIi6naqLHGSJGFqtG1KNZFbjRAREZEKqbLEAb9/Lo6LG4iIiEh9VFviJgzwh1YjIbu0HvkVDaLjEBEREXUr1ZY4b4Me8X18AXCVKhEREamPakscAEzhc3FERESkUqouca2LG7YfLYPJzK1GiIiISD1UXeIGB3sjwMsVDU0W7M2tFB2HiIiIqNuousRJksTTG4iIiEiVVF3igFNbjfC5OCIiIlIT1Ze4SQP8oZGAzOJanKg6KToOERERUbdQfYnzcXfBiHAfAMBmTqkSERGRSqi+xAHA1OhAAMDGTJ7eQEREROrgJCXO9lzctiPlaDJbBachIiIiunhOUeJiQ4zw93RFncmMpNwK0XGIiIiILppTlDiNRmobjduQwSlVIiIicnxOUeIA4JIYPhdHRERE6uE0JW7iAH/oNBKOltYjr7xBdBwiIiKii+I0Jc7boEdChC8AjsYRERGR43OaEgcA01q2GuFzcUREROTonKrEtT4XtyO7HA1NZsFpiIiIiLrOqUpcVKAnwnzd0GS2YsfRctFxiIiIiLrMqUqcJEmcUiUiIiJVcKoSB5yaUt2UWQpZlgWnISIiIuoapytxY/v5wVWnQUHVSRwurhMdh4iIiKhLnK7EubloMb6/HwBOqRIREZHjcroSBwDTeHoDEREROTjnLHEtixv2HqtEdUOz4DREREREneeUJS68lzsGBHrCYpWx5Uip6DhEREREneaUJQ44NaXK5+KIiIjIETlviWuZUk3MLIXVyq1GiIiIyLE4bYlLiPCFl6sO5fVNOFBQLToOERERUac4bYnTazWYNNAfAKdUiYiIyPE4bYkDgKnRrac3sMQRERGRY3HyEhcAADhwvBoltY2C0xARERF1nFOXuEAvA4aGGgHYzlIlIiIichROXeKAU1uNcEqViIiIHInTl7hLWkrclsNlaLZYBachIiIi6hinL3HDQo3w83BBrcmMPbkVouMQERERdYjTlziNRsKUlgUOfC6OiIiIHIXTlzjg1OkN3C+OiIiIHAVLHIDJAwKg1Ug4UlKH/IoG0XGIiIiILoglDoDRXY/4Pr4AgI1cpUpEREQOgCWuRetWI5xSJSIiIkfAEteidauRHUfLcbLJIjgNERER0fmxxLUYGOSJEKMBJrMVO7LLRMchIiIiOi+WuBaSJLVNqa4/xClVIiIiUjaWuN+ZMSgIgO25OFmWBachIiIiOjeWuN8Z198PbnotCqsbkXaiRnQcIiIionNiifsdg16LiQP8AXBKlYiIiJSNJe4MMwa1PBeXUSw4CREREdG5scSdoXVxw4Hj1SiuaRSchoiIiKh9LHFnCPQyYHiYEQA3/iUiIiLlYolrx/SWVap8Lo6IiIiUiiWuHdNbnovbeqQUjc08vYGIiIiUhyWuHYODvRFiNKCx2YrtR3l6AxERESmP4krckiVLIEkSHn74YWEZJEnCJS2jces4pUpEREQKpKgSt2fPHnzwwQcYNmyY6Chtz8VtOMTTG4iIiEh5FFPi6urqsGDBAnz44Yfw9fUVHQfj+vnB3UWLohqe3kBERETKo5gSd99992HevHmYMWPGBd9rMplQU1Nz2qu7GfRaTIyynd6w7hA3/iUiIiJlUUSJW7ZsGfbt24clS5Z06P1LliyB0Whse4WHh9slV+sqVe4XR0REREojvMTl5+fjoYcewhdffAGDwdChz3n88cdRXV3d9srPz7dLNp7eQEREREolvMTt3bsXJSUliI+Ph06ng06nQ2JiIt58803odDpYLGfv0+bq6gpvb+/TXvYQ6GXA8HAfAByNIyIiImURXuKmT5+O1NRUpKSktL0SEhKwYMECpKSkQKvVCs03o2U0bj2fiyMiIiIF0YkO4OXlhdjY2NM+5uHhAT8/v7M+LsL0QUF4Ze1hbD1ShsZmCwx6saWSiIiICFDASJzSDQr2aju9YdsRnt5AREREyiB8JK49mzZtEh2hjSRJmD4oCP/deQzrDpW0bQJMREREJBJH4jrg1FYjxTy9gYiIiBSBJa4Dxrac3lBcY+LpDURERKQILHEdwNMbiIiISGlY4jpoRsuzcOsPcb84IiIiEo8lroOmxQRCkoDUAp7eQEREROKxxHVQgJcrhof5AOBoHBEREYnHEtcJMwbx9AYiIiJSBpa4TmjdI27rkTKcbDr7TFciIiKinsIS1wkxvb0Q6uMGk5mnNxAREZFYLHGdYDu9oWVKNYPPxREREZE4LHGd1DqluiGjGFYrT28gIiIiMVjiOmlsv17waDm9IbWgWnQcIiIiclIscZ3kqtNiSnQAAGBtOlepEhERkRgscV0wc7BtSpUljoiIiERhieuCadGB0GokZBbXIq+8QXQcIiIickIscV3g4+6C0RG9AABr0osEpyEiIiJnxBLXRZxSJSIiIpFY4rqotcTtya1ARX2T4DRERETkbFjiuii8lzsGBXvDKgMbuPEvERER9TCWuItwakqVz8URERFRz2KJuwizWkrc5sNlaGy2CE5DREREzoQl7iIMCfFGiNGAk80WbDtSJjoOERERORGWuIsgSRJmcJUqERERCcASd5Fan4tbd6gEVqssOA0RERE5C5a4izQm0g9erjqU1ZmQnF8lOg4RERE5CZa4i+Si02BaTCAAnt5AREREPYclrhvw9AYiIiLqaSxx3WBqdAD0WgnZpfU4WlonOg4RERE5AZa4buBl0GNsPz8AHI0jIiKinsES101mcUqViIiIehBLXDdp3S9uX14lSmtNgtMQERGR2rHEdZNgoxuGhhohy8CGDI7GERERkX2xxHUjrlIlIiKinsIS141mDbGVuC1ZZWhoMgtOQ0RERGrGEteNooO8EN7LDSazFZsPl4mOQ0RERCrGEteNJEnCzEG9AXBKlYiIiOyLJa6btT4XtyGjGGaLVXAaIiIiUiuWuG42KsIXPu56VDY0Y++xStFxiIiISKVY4rqZTqvBJTGBAIDVaZxSJSIiIvtgibODWYNtz8WtTiuCLMuC0xAREZEascTZwZSBATDoNSioOom0EzWi4xAREZEKscTZgZuLFlMGBgAA1qQVCU5DREREasQSZyezh9imVFexxBEREZEdsMTZyfSYIOg0Eg4X1yGnrF50HCIiIlIZljg7MbrrMa6/HwDbAgciIiKi7sQSZ0ezWqdUD7LEERERUfdiibOj2YODIElASn4ViqobRcchIiIiFWGJs6NAbwPiwn0AAGvSORpHRERE3Yclzs4ujT218S8RERFRd2GJs7PWrUZ2ZlegqqFJcBoiIiJSC5Y4O+vr54GY3l6wWGWsO1QiOg4RERGpBEtcD2gdjeOUKhER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3RedvRZqvSfO5czVqUq9NxyixMmyLL/zzjty3759ZRcXF3nkyJGnLY+/+eab5QkTJshWq7XtY5s2bZLj4uJkFxcXOSIiQl66dKmI2HZxvmtxyy23yFOmTGn79Ysvvij3799fNhgMsq+vrzxx4kT5l19+EZC6+7UueT/zdcstt8iyfPa1kGV13xedvR5qvTfauwYA5E8++aTtPc50b3Tleqj13rjtttvafnYGBATI06dPbystsuxc90Vnr4Va74lzObPEKfXekGS55Uk8IiIiInIYin8mjoiIiIjOxhJHRERE5IBY4oiIiIgcEEscERERkQNiiSMiIiJyQCxxRERERA6IJY6IiIjIAbHEERERETkgljgiIiIiB8QSR0REROSAWOKIiIiIHBBLHBE5ja+//hoGgwEFBQVtH7vjjjswbNgwVFdXC0xGRNR5kizLsugQREQ9QZZljBgxApMmTcLbb7+Nv//97/joo4+wc+dOhIaGio5HRNQpOtEBiIh6iiRJeO6553DNNdcgJCQEb7zxBrZs2cICR0QOiSNxROR0Ro4cibS0NKxZswZTpkwRHYeIqEv4TBwROZXVq1cjIyMDFosFQUFBouMQEXUZR+KIyGns27cPU6dOxTvvvINly5bB3d0d3377rehYRERdwmfiiMgp5ObmYt68eVi8eDEWLlyIwYMHY9SoUdi7dy/i4+NFxyMi6jSOxBGR6lVUVGDChAmYPHky3n///baPz58/HyaTCatWrRKYjoioa1jiiIiIiBwQFzYQEREROSCWOCIiIiIHxBJHRERE5IBY4oiIiIgcEEscERERkQNiiSMiIiJyQCxxRERERA6IJY6IiIjIAbHEERERETkgljgiIiIiB8QSR0REROSA/h+drJCKi8QCBgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<sympy.plotting.plot.Plot at 0x10b879b90>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plot(check,(x,0,4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 81.9615242270663$"
      ],
      "text/plain": [
       "81.9615242270663"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "N(30*(sqrt(3)+1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "sales=400-10*x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 400 - 10 x$"
      ],
      "text/plain": [
       "400 - 10*x"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sales"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "profit=(x-10)*sales"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(400 - 10 x\\right) \\left(x - 10\\right)$"
      ],
      "text/plain": [
       "(400 - 10*x)*(x - 10)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "profit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - 10 x^{2} + 500 x - 4000$"
      ],
      "text/plain": [
       "-10*x**2 + 500*x - 4000"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expand(profit)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left\\{15, 35\\right\\}$"
      ],
      "text/plain": [
       "{15, 35}"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "solveset(profit-1250,x,Reals)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<sympy.plotting.plot.Plot at 0x10f103b90>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plot(profit,(x,28,35))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2160$"
      ],
      "text/plain": [
       "2160"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "profit.subs(x,28)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "eq=Eq((sqrt(3)/2*(x+2))**2+((x+2)/2+x)**2,7**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{3 \\left(x + 2\\right)^{2}}{4} + \\left(\\frac{3 x}{2} + 1\\right)^{2} = 49$"
      ],
      "text/plain": [
       "Eq(3*(x + 2)**2/4 + (3*x/2 + 1)**2, 49)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "eq=Eq((sqrt(3)/2*(x))**2+((x)/2+x+2)**2,7**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{3 x^{2}}{4} + \\left(\\frac{3 x}{2} + 2\\right)^{2} = 49$"
      ],
      "text/plain": [
       "Eq(3*x**2/4 + (3*x/2 + 2)**2, 49)"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left\\{-5, 3\\right\\}$"
      ],
      "text/plain": [
       "{-5, 3}"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "solveset(eq,x,Reals)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sympy.stats import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on function Hypergeometric in module sympy.stats.frv_types:\n",
      "\n",
      "Hypergeometric(name, N, m, n)\n",
      "    Create a Finite Random Variable representing a hypergeometric distribution.\n",
      "    \n",
      "    Parameters\n",
      "    ==========\n",
      "    \n",
      "    N : Positive Integer\n",
      "      Represents finite population of size N.\n",
      "    m : Positive Integer\n",
      "      Represents number of trials with required feature.\n",
      "    n : Positive Integer\n",
      "      Represents numbers of draws.\n",
      "    \n",
      "    \n",
      "    Examples\n",
      "    ========\n",
      "    \n",
      "    >>> from sympy.stats import Hypergeometric, density\n",
      "    \n",
      "    >>> X = Hypergeometric('X', 10, 5, 3) # 10 marbles, 5 white (success), 3 draws\n",
      "    >>> density(X).dict\n",
      "    {0: 1/12, 1: 5/12, 2: 5/12, 3: 1/12}\n",
      "    \n",
      "    Returns\n",
      "    =======\n",
      "    \n",
      "    RandomSymbol\n",
      "    \n",
      "    References\n",
      "    ==========\n",
      "    \n",
      "    .. [1] https://en.wikipedia.org/wiki/Hypergeometric_distribution\n",
      "    .. [2] https://mathworld.wolfram.com/HypergeometricDistribution.html\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(Hypergeometric)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "X=Hypergeometric(\"X\",30,20,3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{0: 6/203, 1: 45/203, 2: 95/203, 3: 57/203}"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "density(X).dict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2$"
      ],
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "E(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr1=k*x+m"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle k x + m$"
      ],
      "text/plain": [
       "k*x + m"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr2=(y-1/S(2))/(x-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{y - \\frac{1}{2}}{x - 1}$"
      ],
      "text/plain": [
       "(y - 1/2)/(x - 1)"
      ]
     },
     "execution_count": 140,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [],
   "source": [
    "y1,y2=symbols(\"y1:3\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [],
   "source": [
    "x1,x2=symbols(\"x1:3\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {},
   "outputs": [],
   "source": [
    "eq=Eq(expr2.subs({x:x1,y:y1})*expr2.subs({x:x2,y:y2}),1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{\\left(y_{1} - \\frac{1}{2}\\right) \\left(y_{2} - \\frac{1}{2}\\right)}{\\left(x_{1} - 1\\right) \\left(x_{2} - 1\\right)} = 1$"
      ],
      "text/plain": [
       "Eq((y1 - 1/2)*(y2 - 1/2)/((x1 - 1)*(x2 - 1)), 1)"
      ]
     },
     "execution_count": 142,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{\\left(k x_{1} + m - \\frac{1}{2}\\right) \\left(k x_{2} + m - \\frac{1}{2}\\right)}{\\left(x_{1} - 1\\right) \\left(x_{2} - 1\\right)} = 1$"
      ],
      "text/plain": [
       "Eq((k*x1 + m - 1/2)*(k*x2 + m - 1/2)/((x1 - 1)*(x2 - 1)), 1)"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eq.subs({y1:expr1.subs(x,x1),y2:expr1.subs(x,x2)})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\left(x_{1} - 1\\right) \\left(x_{2} - 1\\right) + \\left(k x_{1} + m - \\frac{1}{2}\\right) \\left(k x_{2} + m - \\frac{1}{2}\\right)$"
      ],
      "text/plain": [
       "-(x1 - 1)*(x2 - 1) + (k*x1 + m - 1/2)*(k*x2 + m - 1/2)"
      ]
     },
     "execution_count": 145,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify_equation(_,fraction=True,expr=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle k^{2} x_{1} x_{2} + k m x_{1} + k m x_{2} - \\frac{k x_{1}}{2} - \\frac{k x_{2}}{2} + m^{2} - m - x_{1} x_{2} + x_{1} + x_{2} - \\frac{3}{4}$"
      ],
      "text/plain": [
       "k**2*x1*x2 + k*m*x1 + k*m*x2 - k*x1/2 - k*x2/2 + m**2 - m - x1*x2 + x1 + x2 - 3/4"
      ]
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(expand(_))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {},
   "outputs": [],
   "source": [
    "answer=_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle k m x_{1} + k m x_{2} - \\frac{k x_{1}}{2} - \\frac{k x_{2}}{2} + m^{2} - m + x_{1} x_{2} \\left(k^{2} - 1\\right) + x_{1} + x_{2} - \\frac{3}{4}$"
      ],
      "text/plain": [
       "k*m*x1 + k*m*x2 - k*x1/2 - k*x2/2 + m**2 - m + x1*x2*(k**2 - 1) + x1 + x2 - 3/4"
      ]
     },
     "execution_count": 149,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "collect(answer,x1*x2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle k^{2} x_{1} x_{2} + k m x_{1} + k m x_{2} - \\frac{k x_{1}}{2} - \\frac{k x_{2}}{2} + m^{2} - m - x_{1} x_{2} + x_{1} + x_{2} - \\frac{3}{4}$"
      ],
      "text/plain": [
       "k**2*x1*x2 + k*m*x1 + k*m*x2 - k*x1/2 - k*x2/2 + m**2 - m - x1*x2 + x1 + x2 - 3/4"
      ]
     },
     "execution_count": 152,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "collect(answer,x1+x2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle k m x_{2} - \\frac{k x_{2}}{2} + m^{2} - m + x_{1} \\left(k^{2} x_{2} + k m - \\frac{k}{2} - x_{2} + 1\\right) + x_{2} - \\frac{3}{4}$"
      ],
      "text/plain": [
       "k*m*x2 - k*x2/2 + m**2 - m + x1*(k**2*x2 + k*m - k/2 - x2 + 1) + x2 - 3/4"
      ]
     },
     "execution_count": 151,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "collect(answer,x1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# T8 2024高三第一次学业质量评价 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "A=FiniteSet(*range(4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left\\{0, 1, 2, 3\\right\\}$"
      ],
      "text/plain": [
       "{0, 1, 2, 3}"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "B=Interval.open(1,9/S(2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(1, \\frac{9}{2}\\right)$"
      ],
      "text/plain": [
       "Interval.open(1, 9/2)"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "B"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left\\{2, 3\\right\\}$"
      ],
      "text/plain": [
       "{2, 3}"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A&B"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left\\{x\\; \\middle|\\; x \\in \\mathbb{R} \\wedge x - 16 \\cos^{2}{\\left(x \\right)} = 0 \\right\\}$"
      ],
      "text/plain": [
       "ConditionSet(x, Eq(x - 16*cos(x)**2, 0), Reals)"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "solveset(4*Abs(cos(x))-sqrt(x),x,Reals)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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2tJz6qmn8sc//pFHH32UH//4x6xYsYLjjjuOaDQ67mvcMDduueUW6urqOPvssyd8nhPmxVh7qZ3WDUu03cqF0RYFTdMmtDKM9fyxHrcrn//853n11Vd5+umnJ3zeokWLWLRokfH9YYcdxqZNm/jRj37E0UcfXe7LLCunnnqq8fU+++zDYYcdxoIFC7jlllv40pe+NOZrnD4vAG666SZOPfVUZsyYMe5znDwvxiLf9aPQ19iJeDzOeeedRyqV4rrrrpvwuYceeuiIgP8jjjiCAw88kF/84hf8/Oc/L/ello1zzz3X+HrJkiUsW7aMuXPn8ve//31CAeP0ufG73/2OCy64YNLYNifMi4n2UjusG5a3xLW2tuLz+XZRsjt37txF8SqmTZs25vP9fj8tLS1lu9ZKcfnll/PAAw/w2GOPMWvWrLxff+ihh9rqpJQrNTU17LPPPuP+bk6fFwAbNmzgX//6F5/4xCfyfq0T54XKVs5n/VCvy/c1diIej3POOeewfv16HnnkkbzbFXq9Xg466CDHzZfp06czd+7cCX8vp8+Np556irfeequgNcRu82K8vdRO64blRVwwGGTp0qVGtp3ikUce4fDDDx/zNYcddtguz//nP//JsmXLCAQCZbvWcqNpGp///Oe55557ePTRR5k/f35B77Ny5UqmT59e4qszn2g0yhtvvDHu7+bUeZHNzTffzJQpU3j/+9+f92udOC/mz5/PtGnTRvzdY7EYTzzxxLjrB4w/VyZ6jV1QAu6dd97hX//6V0EHGE3TWLVqlePmS2dnJ5s2bZrw93Ly3ADdkr906VL222+/vF9rl3kx2V5qq3WjbCkTJeTOO+/UAoGAdtNNN2lr1qzRrrzySq2mpkZ77733NE3TtC9+8YsjslPXrVunVVdXa1/84he1NWvWaDfddJMWCAS0P//5z2b+GkXz2c9+VmtoaNAef/xxbdu2bca/oaEh4zlf+9rXtAsvvND4/tprr9Xuvfde7e2339Zee+017Wtf+5oGaH/5y1/M+BVKype//GXt8ccf19atW6ctX75cO/3007W6ujpjXoweC6fOC0UymdTmzJmjffWrX93lZ06eF/39/drKlSu1lStXaoD2k5/8RFu5cqWRbXnNNddoDQ0N2j333KOtXr1aO//887Xp06drfX19xntceOGFRra7pmnaM888o/l8Pu2aa67R3njjDe2aa67R/H6/tnz58or/fvky0XjE43HtzDPP1GbNmqWtWrVqxDoSjUaN9xg9Ht/+9re1hx56SFu7dq22cuVK7WMf+5jm9/u1559/3oxfMWcmGov+/n7ty1/+svbss89q69ev1x577DHtsMMO02bOnOnIuTHZfaJpeqWH6upq7frrrx/zPZwyL3LZS+2ybthCxGmapv3qV7/S5s6dqwWDQe3AAw8cUVbjoosu0o444ogR5RQef/xx7YADDtCCwaA2b968cSelnQDG/HfzzTcbz7n44ou1Y445xvj+Bz/4gbZgwQItHA5rTU1N2pFHHqn9/e9/r/zFl4Fzzz1Xmz59uhYIBLQZM2ZoZ599tvb6668bPx89FprmzHmhePjhhzVAe+utt3b5mZPnhSqXMvrfxRdfrGmaXi7gqquu0qZNm6aFQiHt6KOP1lavXj3iPY455hjj+Yq7775bW7RokRYIBLTFixfbRuBONB7r168fdx157LHHjPcYPR5XXnmlNmfOHC0YDGptbW3aSSedpD377LOV/+XyZKKxGBoa0k466SStra1NCwQC2pw5c7SLL75Y27hx44j3cMrcmOw+0TRNu+GGG7Sqqiqtp6dnzPdwyrzIZS+1y7rhSf9CgiAIgiAIgo2wfEycIAiCIAiCsCsi4gRBEARBEGyIiDhBEARBEAQbIiJOEARBEATBhoiIEwRBEARBsCEi4gRBEARBEGyIiDhBEARBEAQbIiJOEARBEATBhoiIEwRBEARBsCEi4gRBEARBEGyIiDhBEARBEAQbIiJOEATXcMcddxAOh9myZYvx2Cc+8Qn23Xdfent7TbwyQRCE/PFomqaZfRGCIAiVQNM09t9/f4466ih++ctf8p3vfIff/va3LF++nJkzZ5p9eYIgCHnhN/sCBEEQKoXH4+H73/8+H/rQh5gxYwY/+9nPeOqpp0TACYJgS8QSJwiC6zjwwAN5/fXX+ec//8kxxxxj9uUIgiAUhMTECYLgKh5++GHefPNNkskkU6dONftyBEEQCkYscYIguIaXX36ZY489ll/96lfceeedVFdXc/fdd5t9WYIgCAUhMXGCILiC9957j/e///187Wtf48ILL2SvvfbioIMO4qWXXmLp0qVmX54gCELeiCVOEATH09XVxRFHHMHRRx/NDTfcYDx+1llnEY1Geeihh0y8OkEQhMIQEScIgiAIgmBDJLFBEARBEATBhoiIEwRBEARBsCEi4gRBEARBEGyIiDhBEARBEAQbIiJOEARBEATBhoiIEwRBEARBsCEi4gRBEARBEGyIiDhBEARBEAQbIiJOEARBEATBhoiIEwRBEARBsCEi4gRBEARBEGzI/wfWxtNTvoAHmgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<sympy.plotting.plot.Plot at 0x10b922050>"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plot(4*Abs(cos(x)),sqrt(x),(x,0,20))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{3}{7}$"
      ],
      "text/plain": [
       "3/7"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "2*binomial(4,2)/binomial(8,2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "eq=Eq(cos(x-y),2*cos(x+y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\cos{\\left(x - y \\right)} = 2 \\cos{\\left(x + y \\right)}$"
      ],
      "text/plain": [
       "Eq(cos(x - y), 2*cos(x + y))"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "from basic_package.utils import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 3 \\sin{\\left(x \\right)} \\sin{\\left(y \\right)} - \\cos{\\left(x \\right)} \\cos{\\left(y \\right)}$"
      ],
      "text/plain": [
       "3*sin(x)*sin(y) - cos(x)*cos(y)"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify_equation(expand_trig(eq),expr=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left\\{4 - 2 \\sqrt{3}, 2 \\sqrt{3} + 4\\right\\}$"
      ],
      "text/plain": [
       "{4 - 2*sqrt(3), 2*sqrt(3) + 4}"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "solveset(Eq(x+3*x/(1-x),4),x,Reals)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [],
   "source": [
    "from excel_function_package.chi_square_test import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on class ChiSquaredTest in module excel_function_package.chi_square_test:\n",
      "\n",
      "class ChiSquaredTest(builtins.object)\n",
      " |  ChiSquaredTest(m: sympy.matrices.matrices.MatrixBase) -> None\n",
      " |  \n",
      " |  主要是对高中数学里的卡方检测进行抽象处理，便于以后计算处理。\n",
      " |  其实我现在越看这个卡方独立性检验越觉得里面有问题，但是不管怎样，我觉得还是先以完成任务为第一要务，不对其基本的理论基础做评价。\n",
      " |  \n",
      " |  Methods defined here:\n",
      " |  \n",
      " |  __init__(self, m: sympy.matrices.matrices.MatrixBase) -> None\n",
      " |      Initialize self.  See help(type(self)) for accurate signature.\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Readonly properties defined here:\n",
      " |  \n",
      " |  chi_squared_value\n",
      " |  \n",
      " |  error_probability\n",
      " |  \n",
      " |  expand_matrix\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Data descriptors defined here:\n",
      " |  \n",
      " |  __dict__\n",
      " |      dictionary for instance variables (if defined)\n",
      " |  \n",
      " |  __weakref__\n",
      " |      list of weak references to the object (if defined)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(ChiSquaredTest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [],
   "source": [
    "chi=ChiSquaredTest(Matrix([[40,60],[20,80]]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}40 & 60 & 100\\\\20 & 80 & 100\\\\60 & 140 & 200\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "Matrix([\n",
       "[40,  60, 100],\n",
       "[20,  80, 100],\n",
       "[60, 140, 200]])"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "chi.expand_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{200}{21}$"
      ],
      "text/plain": [
       "200/21"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "chi.chi_squared_value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 9.52380952380952$"
      ],
      "text/plain": [
       "9.52380952380952"
      ]
     },
     "execution_count": 172,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "N(chi.chi_squared_value)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 1 - \\operatorname{erf}{\\left(\\frac{10 \\sqrt{21}}{21} \\right)}$"
      ],
      "text/plain": [
       "1 - erf(10*sqrt(21)/21)"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "chi.error_probability"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 0.00202823114845208$"
      ],
      "text/plain": [
       "0.00202823114845208"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "N(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "metadata": {},
   "outputs": [],
   "source": [
    "X=Hypergeometric(\"x\",10,7,3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{0: 1/120, 1: 7/40, 2: 21/40, 3: 7/24}"
      ]
     },
     "execution_count": 174,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "density(X).dict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sympy.stats import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 177,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{21}{10}$"
      ],
      "text/plain": [
       "21/10"
      ]
     },
     "execution_count": 177,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "E(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=sin(x)+ln(x+1)-2*x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - 2 x + \\log{\\left(x + 1 \\right)} + \\sin{\\left(x \\right)}$"
      ],
      "text/plain": [
       "-2*x + log(x + 1) + sin(x)"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<sympy.plotting.plot.Plot at 0x130248710>"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plot(expr,(x,-0.98,50))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\cos{\\left(x \\right)} - 2 + \\frac{1}{x + 1}$"
      ],
      "text/plain": [
       "cos(x) - 2 + 1/(x + 1)"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff(expr,x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - (\\sin{\\left(x \\right)} + \\frac{1}{\\left(x + 1\\right)^{2}})$"
      ],
      "text/plain": [
       "-(sin(x) + (x + 1)**(-2))"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff(expr,x,2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [],
   "source": [
    "e=Ellipse(Point(0,0),sqrt(2),1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{x^{2}}{2} + y^{2} - 1$"
      ],
      "text/plain": [
       "x**2/2 + y**2 - 1"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "e.equation()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [],
   "source": [
    "k = symbols(\"k\",positibe=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [],
   "source": [
    "l=Line(e.foci[1],slope=k)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - k x + k + y$"
      ],
      "text/plain": [
       "-k*x + k + y"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "l.equation()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {},
   "outputs": [],
   "source": [
    "from quadratic_function.utils import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - 4 k^{2} x + x^{2} \\cdot \\left(2 k^{2} + 1\\right) + 2 \\left(k - 1\\right) \\left(k + 1\\right)$"
      ],
      "text/plain": [
       "-4*k**2*x + x**2*(2*k**2 + 1) + 2*(k - 1)*(k + 1)"
      ]
     },
     "execution_count": 157,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "line_and_quadratic(l,e)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {},
   "outputs": [],
   "source": [
    "q=QuadraticFunction(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 16 k^{4} - \\left(2 k^{2} - 2\\right) \\left(8 k^{2} + 4\\right)$"
      ],
      "text/plain": [
       "16*k**4 - (2*k**2 - 2)*(8*k**2 + 4)"
      ]
     },
     "execution_count": 159,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q.delta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 8 k^{2} + 8$"
      ],
      "text/plain": [
       "8*k**2 + 8"
      ]
     },
     "execution_count": 160,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [],
   "source": [
    "A,B=Intersection(l,e)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sqrt{\\frac{8 k^{2} \\left(k^{2} + 1\\right)}{\\left(2 k^{2} + 1\\right)^{2}} + \\left(- \\frac{- \\frac{\\sqrt{2} k \\sqrt{k^{2} + 1}}{2 k^{2} + 1} + k - \\frac{k}{2 k^{2} + 1}}{k} + \\frac{\\frac{\\sqrt{2} k \\sqrt{k^{2} + 1}}{2 k^{2} + 1} + k - \\frac{k}{2 k^{2} + 1}}{k}\\right)^{2}}$"
      ],
      "text/plain": [
       "sqrt(8*k**2*(k**2 + 1)/(2*k**2 + 1)**2 + (-(-sqrt(2)*k*sqrt(k**2 + 1)/(2*k**2 + 1) + k - k/(2*k**2 + 1))/k + (sqrt(2)*k*sqrt(k**2 + 1)/(2*k**2 + 1) + k - k/(2*k**2 + 1))/k)**2)"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A.distance(B)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2 \\sqrt{2} \\sqrt{\\frac{\\left(k^{2} + 1\\right)^{2}}{4 k^{4} + 4 k^{2} + 1}}$"
      ],
      "text/plain": [
       "2*sqrt(2)*sqrt((k**2 + 1)**2/(4*k**4 + 4*k**2 + 1))"
      ]
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "factor(simplify(_))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2 \\sqrt{2} \\sqrt{\\frac{\\left(k^{2} + 1\\right)^{2}}{\\left(2 k^{2} + 1\\right)^{2}}}$"
      ],
      "text/plain": [
       "2*sqrt(2)*sqrt((k**2 + 1)**2/(2*k**2 + 1)**2)"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "factor_nc(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [],
   "source": [
    "distance_AB=_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 183,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{2 \\sqrt{2}}{\\sin^{2}{\\left(x \\right)} + 1}$"
      ],
      "text/plain": [
       "2*sqrt(2)/(sin(x)**2 + 1)"
      ]
     },
     "execution_count": 183,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trigsimp(powdenest(distance_AB,force=True).subs(k,tan(x)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 185,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{4 \\sqrt{2}}{\\sin{\\left(2 x \\right)} + 3}$"
      ],
      "text/plain": [
       "4*sqrt(2)/(sin(2*x) + 3)"
      ]
     },
     "execution_count": 185,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trigsimp(trigsimp(powdenest(distance_AB,force=True).subs(k,tan(x))).subs(x,x+pi/4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(\\sqrt{2}, \\frac{4 \\sqrt{2}}{3}\\right) \\cup \\left(\\frac{4 \\sqrt{2}}{3}, 2 \\sqrt{2}\\right]$"
      ],
      "text/plain": [
       "Union(Interval.open(sqrt(2), 4*sqrt(2)/3), Interval.Lopen(4*sqrt(2)/3, 2*sqrt(2)))"
      ]
     },
     "execution_count": 113,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function_range(distance_AB,k,Interval.Ropen(0,1)|Interval.open(1,oo))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{\\tan{\\left(x \\right)} + 1}{1 - \\tan{\\left(x \\right)}}$"
      ],
      "text/plain": [
       "(tan(x) + 1)/(1 - tan(x))"
      ]
     },
     "execution_count": 114,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expand_trig(tan(x+pi/4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2 \\sqrt{2} \\sqrt{\\frac{\\left(1 + \\frac{\\left(k + 1\\right)^{2}}{\\left(1 - k\\right)^{2}}\\right)^{2}}{\\left(1 + \\frac{2 \\left(k + 1\\right)^{2}}{\\left(1 - k\\right)^{2}}\\right)^{2}}}$"
      ],
      "text/plain": [
       "2*sqrt(2)*sqrt((1 + (k + 1)**2/(1 - k)**2)**2/(1 + 2*(k + 1)**2/(1 - k)**2)**2)"
      ]
     },
     "execution_count": 115,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "distance_AB.subs(k,(k+1)/(1-k))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2 \\sqrt{2} \\sqrt{\\frac{\\left(\\left(k - 1\\right)^{2} + \\left(k + 1\\right)^{2}\\right)^{2}}{\\left(\\left(k - 1\\right)^{2} + 2 \\left(k + 1\\right)^{2}\\right)^{2}}}$"
      ],
      "text/plain": [
       "2*sqrt(2)*sqrt(((k - 1)**2 + (k + 1)**2)**2/((k - 1)**2 + 2*(k + 1)**2)**2)"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [],
   "source": [
    "distance_ED=_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2 \\sqrt{2} \\sqrt{\\frac{\\left(k^{2} + 1\\right)^{2}}{\\left(2 k^{2} + 1\\right)^{2}}} \\sqrt{\\frac{\\left(\\left(k - 1\\right)^{2} + \\left(k + 1\\right)^{2}\\right)^{2}}{\\left(\\left(k - 1\\right)^{2} + 2 \\left(k + 1\\right)^{2}\\right)^{2}}}$"
      ],
      "text/plain": [
       "2*sqrt(2)*sqrt((k**2 + 1)**2/(2*k**2 + 1)**2)*sqrt(((k - 1)**2 + (k + 1)**2)**2/((k - 1)**2 + 2*(k + 1)**2)**2)"
      ]
     },
     "execution_count": 122,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "distance_ED*distance_AB/sqrt(8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [],
   "source": [
    "check=powdenest(distance_ED*distance_AB/sqrt(8),force=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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oqIi7d69u8ffz15yvcswDM2bN09nnnmmLTaaHkh+//vf6+9//7tWr15tdinowJYtW7Ro0SLNmzdP99xzjz788EPNnTtXXq9Xs2fPNrs8SPrhD3+o2tpajRs3Tk6nUy0tLfrpT3+q73znO2aXhg4ks0JRUVG760VFRdq6dWva6xlwQS7p0Hl8hmH0yty+5F5ylbVN2rG/gSDXQ7fccos++ugjrVq1yuxS0Mb27dt166236q233pLP5zO7HHSgtbVV06ZN04MPPihJKi0t1caNG7Vo0SKCnEW8/PLL+s///E+9+OKLmjhxooLBoG677TaVlJTommuuMbs8HEVf5YiuGnBDq0OGDJHT6dSePXvaXa+qqjosXXcXCx56xw9+8AO9/vrrevvtt3XccceZXQ7aWLt2raqqqjR16lS5XC65XC6tWLFCjz32mFwul1paWswuEZKKi4s1YcKEdtfGjx/fKwu70Dvuuusu3X333br88st10kkn6eqrr9btt9+uBQsWmF0aOjB06FBJOmwUrzdzRFcMuCDn8Xg0depUvf322+2uL1++XNOnT++Vn8Fecj1jGIZuueUWLVmyRH/96181evRos0vCIc4991xt2LBBwWAwdZs2bZquvPJKBYNBOZ1Os0uEpDPOOOOwrXs+++wzjRw50qSKcKiGhgZlZLT/T7HT6WT7EQsbPXq0hg4dquXLl6euRaNRrVixotdyRFcMyKHVefPm6aqrrpIkffrpp3rxxRe1bds23XTTTb3y/ewl1zNz5szRiy++qNdee025ubmpf/UEAgFlZmaaXB0kKTc397A5i9nZ2Ro8eDBzGS3k9ttv1/Tp0/Xggw/q0ksv1YcffqhnnnlGzzzzjNmlIaG8vFw//elPNWLECE2cOFHr1q3To48+quuvv97s0ga0cDiszZs3p55XVFQoGAwqPz9fI0aM0G233aYHH3xQY8eO1dixY/Xggw8qKytLV1xxRfqLTfs6WYt45JFHDEmG2+02TjnllF7d2uL3H241Rv7wz8bs5/6v175zIJF0xNtvfvMbs0vDUbD9iDX96U9/MiZNmmR4vV5j3LhxxjPPPGN2SWgjFAoZt956qzFixAjD5/MZY8aMMe69914jEomYXdqA9vbbbx/xv0PXXHONYRjxLUjuv/9+Y+jQoYbX6zXOOussY8OGDabU6jCMgblHRigUUiAQ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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<sympy.plotting.plot.Plot at 0x137f50a50>"
      ]
     },
     "execution_count": 153,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plot(check,(k,0,10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 171,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{2 \\sqrt{2}}{3}$"
      ],
      "text/plain": [
       "2*sqrt(2)/3"
      ]
     },
     "execution_count": 171,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "limit(check,k,oo)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{4 \\sqrt{2}}{3}$"
      ],
      "text/plain": [
       "4*sqrt(2)/3"
      ]
     },
     "execution_count": 129,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(distance_ED*distance_AB/sqrt(8)).subs(k,0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{2 \\sqrt{2} \\left(k^{2} + 1\\right) \\left(\\left(k - 1\\right)^{2} + \\left(k + 1\\right)^{2}\\right)}{\\left(2 k^{2} + 1\\right) \\left(\\left(k - 1\\right)^{2} + 2 \\left(k + 1\\right)^{2}\\right)}$"
      ],
      "text/plain": [
       "2*sqrt(2)*(k**2 + 1)*((k - 1)**2 + (k + 1)**2)/((2*k**2 + 1)*((k - 1)**2 + 2*(k + 1)**2))"
      ]
     },
     "execution_count": 168,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "check"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{4 \\sqrt{2} \\left(k^{2} + 1\\right)^{2}}{\\left(2 k^{2} + 1\\right) \\left(3 k^{2} + 2 k + 3\\right)}$"
      ],
      "text/plain": [
       "4*sqrt(2)*(k**2 + 1)**2/((2*k**2 + 1)*(3*k**2 + 2*k + 3))"
      ]
     },
     "execution_count": 166,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "factor(expand(check))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 167,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 6 k^{4} + 4 k^{3} + 9 k^{2} + 2 k + 3$"
      ],
      "text/plain": [
       "6*k**4 + 4*k**3 + 9*k**2 + 2*k + 3"
      ]
     },
     "execution_count": 167,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expand(fraction(_)[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{8 \\sqrt{2} \\left(k^{2} + 1\\right) \\left(k^{2} - 2 k - 1\\right) \\left(2 k^{2} + k + 1\\right)}{\\left(2 k^{2} + 1\\right)^{2} \\left(3 k^{2} + 2 k + 3\\right)^{2}}$"
      ],
      "text/plain": [
       "8*sqrt(2)*(k**2 + 1)*(k**2 - 2*k - 1)*(2*k**2 + k + 1)/((2*k**2 + 1)**2*(3*k**2 + 2*k + 3)**2)"
      ]
     },
     "execution_count": 170,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "factor(diff(check,k))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 195,
   "metadata": {},
   "outputs": [],
   "source": [
    "a,b,c=symbols(\"a,b,c\",positive=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 196,
   "metadata": {},
   "outputs": [],
   "source": [
    "e=Ellipse(Point(0,0),a,b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 197,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle -1 + \\frac{y^{2}}{b^{2}} + \\frac{x^{2}}{a^{2}}$"
      ],
      "text/plain": [
       "-1 + y**2/b**2 + x**2/a**2"
      ]
     },
     "execution_count": 197,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "e.equation(x,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 198,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left\\{- \\frac{b \\sqrt{a - c} \\sqrt{a + c}}{a}, \\frac{b \\sqrt{a - c} \\sqrt{a + c}}{a}\\right\\}$"
      ],
      "text/plain": [
       "{-b*sqrt(a - c)*sqrt(a + c)/a, b*sqrt(a - c)*sqrt(a + c)/a}"
      ]
     },
     "execution_count": 198,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "solveset(e.equation(x,y).subs(x,c),y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 199,
   "metadata": {},
   "outputs": [],
   "source": [
    "e1=Ellipse(Point(0,0),4,2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 200,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['__add__',\n",
       " '__and__',\n",
       " '__annotations__',\n",
       " '__class__',\n",
       " '__cmp__',\n",
       " '__contains__',\n",
       " '__delattr__',\n",
       " '__dict__',\n",
       " '__dir__',\n",
       " '__doc__',\n",
       " '__eq__',\n",
       " '__format__',\n",
       " '__ge__',\n",
       " '__getattribute__',\n",
       " '__getnewargs__',\n",
       " '__getstate__',\n",
       " '__gt__',\n",
       " '__hash__',\n",
       " '__init__',\n",
       " '__init_subclass__',\n",
       " '__le__',\n",
       " '__lt__',\n",
       " '__module__',\n",
       " '__mul__',\n",
       " '__ne__',\n",
       " '__new__',\n",
       " '__or__',\n",
       " '__pow__',\n",
       " '__radd__',\n",
       " '__reduce__',\n",
       " '__reduce_ex__',\n",
       " '__repr__',\n",
       " '__rmul__',\n",
       " '__rsub__',\n",
       " '__rtruediv__',\n",
       " '__setattr__',\n",
       " '__setstate__',\n",
       " '__sizeof__',\n",
       " '__slots__',\n",
       " '__str__',\n",
       " '__sub__',\n",
       " '__subclasshook__',\n",
       " '__sympy__',\n",
       " '__weakref__',\n",
       " '__xor__',\n",
       " '_args',\n",
       " '_assumptions',\n",
       " '_boundary',\n",
       " '_compare_pretty',\n",
       " '_complement',\n",
       " '_constructor_postprocessor_mapping',\n",
       " '_contains',\n",
       " '_do_eq_sympify',\n",
       " '_eval_derivative_n_times',\n",
       " '_eval_evalf',\n",
       " '_eval_is_subset',\n",
       " '_eval_is_superset',\n",
       " '_eval_powerset',\n",
       " '_eval_rewrite',\n",
       " '_eval_subs',\n",
       " '_evalf',\n",
       " '_exec_constructor_postprocessors',\n",
       " '_explicit_class_assumptions',\n",
       " '_has',\n",
       " '_hashable_content',\n",
       " '_inf',\n",
       " '_infimum_key',\n",
       " '_kind',\n",
       " '_measure',\n",
       " '_mhash',\n",
       " '_prop_handler',\n",
       " '_recursive_call',\n",
       " '_repr_disabled',\n",
       " '_repr_latex_',\n",
       " '_repr_png_',\n",
       " '_repr_svg_',\n",
       " '_rewrite',\n",
       " '_sage_',\n",
       " '_sorted_args',\n",
       " '_subs',\n",
       " '_sup',\n",
       " '_svg',\n",
       " '_symmetric_difference',\n",
       " '_sympy_',\n",
       " '_to_mpmath',\n",
       " '_xreplace',\n",
       " 'ambient_dimension',\n",
       " 'apoapsis',\n",
       " 'arbitrary_point',\n",
       " 'area',\n",
       " 'args',\n",
       " 'as_content_primitive',\n",
       " 'as_dummy',\n",
       " 'assumptions0',\n",
       " 'atoms',\n",
       " 'auxiliary_circle',\n",
       " 'boundary',\n",
       " 'bounds',\n",
       " 'canonical_variables',\n",
       " 'center',\n",
       " 'circumference',\n",
       " 'class_key',\n",
       " 'closure',\n",
       " 'compare',\n",
       " 'complement',\n",
       " 'contains',\n",
       " 'copy',\n",
       " 'could_extract_minus_sign',\n",
       " 'count',\n",
       " 'count_ops',\n",
       " 'default_assumptions',\n",
       " 'director_circle',\n",
       " 'doit',\n",
       " 'dummy_eq',\n",
       " 'eccentricity',\n",
       " 'encloses',\n",
       " 'encloses_point',\n",
       " 'equals',\n",
       " 'equation',\n",
       " 'evalf',\n",
       " 'evolute',\n",
       " 'expr_free_symbols',\n",
       " 'find',\n",
       " 'foci',\n",
       " 'focus_distance',\n",
       " 'free_symbols',\n",
       " 'fromiter',\n",
       " 'func',\n",
       " 'has',\n",
       " 'has_free',\n",
       " 'has_xfree',\n",
       " 'hradius',\n",
       " 'inf',\n",
       " 'interior',\n",
       " 'intersect',\n",
       " 'intersection',\n",
       " 'is_Add',\n",
       " 'is_AlgebraicNumber',\n",
       " 'is_Atom',\n",
       " 'is_Boolean',\n",
       " 'is_Complement',\n",
       " 'is_ComplexRegion',\n",
       " 'is_Derivative',\n",
       " 'is_Dummy',\n",
       " 'is_EmptySet',\n",
       " 'is_Equality',\n",
       " 'is_FiniteSet',\n",
       " 'is_Float',\n",
       " 'is_Function',\n",
       " 'is_Indexed',\n",
       " 'is_Integer',\n",
       " 'is_Intersection',\n",
       " 'is_Interval',\n",
       " 'is_MatAdd',\n",
       " 'is_MatMul',\n",
       " 'is_Matrix',\n",
       " 'is_Mul',\n",
       " 'is_Not',\n",
       " 'is_Number',\n",
       " 'is_NumberSymbol',\n",
       " 'is_Order',\n",
       " 'is_Piecewise',\n",
       " 'is_Point',\n",
       " 'is_Poly',\n",
       " 'is_Pow',\n",
       " 'is_ProductSet',\n",
       " 'is_Rational',\n",
       " 'is_Relational',\n",
       " 'is_Symbol',\n",
       " 'is_Union',\n",
       " 'is_UniversalSet',\n",
       " 'is_Vector',\n",
       " 'is_Wild',\n",
       " 'is_algebraic',\n",
       " 'is_antihermitian',\n",
       " 'is_closed',\n",
       " 'is_commutative',\n",
       " 'is_comparable',\n",
       " 'is_complex',\n",
       " 'is_composite',\n",
       " 'is_disjoint',\n",
       " 'is_empty',\n",
       " 'is_even',\n",
       " 'is_extended_negative',\n",
       " 'is_extended_nonnegative',\n",
       " 'is_extended_nonpositive',\n",
       " 'is_extended_nonzero',\n",
       " 'is_extended_positive',\n",
       " 'is_extended_real',\n",
       " 'is_finite',\n",
       " 'is_finite_set',\n",
       " 'is_hermitian',\n",
       " 'is_hypergeometric',\n",
       " 'is_imaginary',\n",
       " 'is_infinite',\n",
       " 'is_integer',\n",
       " 'is_interval',\n",
       " 'is_irrational',\n",
       " 'is_iterable',\n",
       " 'is_negative',\n",
       " 'is_noninteger',\n",
       " 'is_nonnegative',\n",
       " 'is_nonpositive',\n",
       " 'is_nonzero',\n",
       " 'is_number',\n",
       " 'is_odd',\n",
       " 'is_open',\n",
       " 'is_polar',\n",
       " 'is_positive',\n",
       " 'is_prime',\n",
       " 'is_proper_subset',\n",
       " 'is_proper_superset',\n",
       " 'is_rational',\n",
       " 'is_real',\n",
       " 'is_similar',\n",
       " 'is_subset',\n",
       " 'is_superset',\n",
       " 'is_symbol',\n",
       " 'is_tangent',\n",
       " 'is_transcendental',\n",
       " 'is_zero',\n",
       " 'isdisjoint',\n",
       " 'issubset',\n",
       " 'issuperset',\n",
       " 'kind',\n",
       " 'major',\n",
       " 'match',\n",
       " 'matches',\n",
       " 'measure',\n",
       " 'minor',\n",
       " 'n',\n",
       " 'normal_lines',\n",
       " 'parameter_value',\n",
       " 'periapsis',\n",
       " 'plot_interval',\n",
       " 'polar_second_moment_of_area',\n",
       " 'powerset',\n",
       " 'random_point',\n",
       " 'rcall',\n",
       " 'refine',\n",
       " 'reflect',\n",
       " 'replace',\n",
       " 'rewrite',\n",
       " 'rotate',\n",
       " 'scale',\n",
       " 'second_moment_of_area',\n",
       " 'section_modulus',\n",
       " 'semilatus_rectum',\n",
       " 'simplify',\n",
       " 'sort_key',\n",
       " 'subs',\n",
       " 'sup',\n",
       " 'symmetric_difference',\n",
       " 'tangent_lines',\n",
       " 'translate',\n",
       " 'union',\n",
       " 'vradius',\n",
       " 'xreplace']"
      ]
     },
     "execution_count": 200,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dir(e1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 201,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{\\sqrt{3}}{2}$"
      ],
      "text/plain": [
       "sqrt(3)/2"
      ]
     },
     "execution_count": 201,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "e1.eccentricity"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 202,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{x^{2}}{16} + \\frac{y^{2}}{4} - 1$"
      ],
      "text/plain": [
       "x**2/16 + y**2/4 - 1"
      ]
     },
     "execution_count": 202,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "e1.equation()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 203,
   "metadata": {},
   "outputs": [],
   "source": [
    "l=Line(Point(2,0),slope=k)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 204,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - k x + 2 k + y$"
      ],
      "text/plain": [
       "-k*x + 2*k + y"
      ]
     },
     "execution_count": 204,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "l.equation()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 272,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - 16 k^{2} x + x^{2} \\cdot \\left(4 k^{2} + 1\\right) + 16 \\left(k - 1\\right) \\left(k + 1\\right)$"
      ],
      "text/plain": [
       "-16*k**2*x + x**2*(4*k**2 + 1) + 16*(k - 1)*(k + 1)"
      ]
     },
     "execution_count": 272,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "line_and_quadratic(l,e1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "metadata": {},
   "outputs": [],
   "source": [
    "l1=Line(x-8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 206,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle x - 8$"
      ],
      "text/plain": [
       "x - 8"
      ]
     },
     "execution_count": 206,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "l1.equation()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 207,
   "metadata": {},
   "outputs": [],
   "source": [
    "M,N=Intersection(l,e1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 208,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{Point2D}\\left(\\frac{- \\frac{4 k \\sqrt{3 k^{2} + 1}}{4 k^{2} + 1} + 2 k - \\frac{2 k}{4 k^{2} + 1}}{k}, - \\frac{4 k \\sqrt{3 k^{2} + 1}}{4 k^{2} + 1} - \\frac{2 k}{4 k^{2} + 1}\\right)$"
      ],
      "text/plain": [
       "Point2D((-4*k*sqrt(3*k**2 + 1)/(4*k**2 + 1) + 2*k - 2*k/(4*k**2 + 1))/k, -4*k*sqrt(3*k**2 + 1)/(4*k**2 + 1) - 2*k/(4*k**2 + 1))"
      ]
     },
     "execution_count": 208,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "M"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 209,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{Point2D}\\left(\\frac{\\frac{4 k \\sqrt{3 k^{2} + 1}}{4 k^{2} + 1} + 2 k - \\frac{2 k}{4 k^{2} + 1}}{k}, \\frac{4 k \\sqrt{3 k^{2} + 1}}{4 k^{2} + 1} - \\frac{2 k}{4 k^{2} + 1}\\right)$"
      ],
      "text/plain": [
       "Point2D((4*k*sqrt(3*k**2 + 1)/(4*k**2 + 1) + 2*k - 2*k/(4*k**2 + 1))/k, 4*k*sqrt(3*k**2 + 1)/(4*k**2 + 1) - 2*k/(4*k**2 + 1))"
      ]
     },
     "execution_count": 209,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "N"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "metadata": {},
   "outputs": [],
   "source": [
    "A=Point(-4,0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 213,
   "metadata": {},
   "outputs": [],
   "source": [
    "R,=Intersection(Line(A,N),l1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 214,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{Point2D}\\left(8, \\frac{6 k \\left(2 \\sqrt{3 k^{2} + 1} - 1\\right)}{6 k^{2} + \\sqrt{3 k^{2} + 1} + 1}\\right)$"
      ],
      "text/plain": [
       "Point2D(8, 6*k*(2*sqrt(3*k**2 + 1) - 1)/(6*k**2 + sqrt(3*k**2 + 1) + 1))"
      ]
     },
     "execution_count": 214,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "R"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 215,
   "metadata": {},
   "outputs": [],
   "source": [
    "l2=Line(M,R)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 216,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{18 k x \\sqrt{3 k^{2} + 1}}{6 k^{2} + \\sqrt{3 k^{2} + 1} + 1} + \\frac{72 k \\sqrt{3 k^{2} + 1}}{6 k^{2} + \\sqrt{3 k^{2} + 1} + 1} + \\frac{4 y \\left(6 k^{2} + \\sqrt{3 k^{2} + 1} + 2\\right)}{4 k^{2} + 1}$"
      ],
      "text/plain": [
       "-18*k*x*sqrt(3*k**2 + 1)/(6*k**2 + sqrt(3*k**2 + 1) + 1) + 72*k*sqrt(3*k**2 + 1)/(6*k**2 + sqrt(3*k**2 + 1) + 1) + 4*y*(6*k**2 + sqrt(3*k**2 + 1) + 2)/(4*k**2 + 1)"
      ]
     },
     "execution_count": 216,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "l2.equation()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 217,
   "metadata": {},
   "outputs": [],
   "source": [
    "check=simplify(expand(_))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 218,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{6 \\cdot \\left(6 k^{2} y - 3 k x \\sqrt{3 k^{2} + 1} + 12 k \\sqrt{3 k^{2} + 1} + 2 y \\sqrt{3 k^{2} + 1} + 2 y\\right)}{6 k^{2} + \\sqrt{3 k^{2} + 1} + 1}$"
      ],
      "text/plain": [
       "6*(6*k**2*y - 3*k*x*sqrt(3*k**2 + 1) + 12*k*sqrt(3*k**2 + 1) + 2*y*sqrt(3*k**2 + 1) + 2*y)/(6*k**2 + sqrt(3*k**2 + 1) + 1)"
      ]
     },
     "execution_count": 218,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "check"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 219,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left\\{\\frac{3 k \\sqrt{3 k^{2} + 1} \\left(x - 4\\right)}{2 \\cdot \\left(3 k^{2} + \\sqrt{3 k^{2} + 1} + 1\\right)}\\right\\}$"
      ],
      "text/plain": [
       "{3*k*sqrt(3*k**2 + 1)*(x - 4)/(2*(3*k**2 + sqrt(3*k**2 + 1) + 1))}"
      ]
     },
     "execution_count": 219,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "solveset(check,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 220,
   "metadata": {},
   "outputs": [],
   "source": [
    "e=Ellipse(Point(0,0),sqrt(8),2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 221,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{x^{2}}{8} + \\frac{y^{2}}{4} - 1$"
      ],
      "text/plain": [
       "x**2/8 + y**2/4 - 1"
      ]
     },
     "execution_count": 221,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "e.equation()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 223,
   "metadata": {},
   "outputs": [],
   "source": [
    "f=Function(\"f\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 229,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{x}{4} + \\frac{f{\\left(x \\right)} \\frac{d}{d x} f{\\left(x \\right)}}{2}$"
      ],
      "text/plain": [
       "x/4 + f(x)*Derivative(f(x), x)/2"
      ]
     },
     "execution_count": 229,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff(e.equation(x,y).subs(y,f(x)),x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 230,
   "metadata": {},
   "outputs": [],
   "source": [
    "diff1,=solveset(_,diff(f(x),x)).subs(f(x),y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 231,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{x}{2 y}$"
      ],
      "text/plain": [
       "-x/(2*y)"
      ]
     },
     "execution_count": 231,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 233,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{x^{2}}{4 y^{3}} - \\frac{1}{2 y}$"
      ],
      "text/plain": [
       "-x**2/(4*y**3) - 1/(2*y)"
      ]
     },
     "execution_count": 233,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff(diff1.subs(y,f(x)),x).subs({diff(f(x),x):diff1,f(x):y})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 234,
   "metadata": {},
   "outputs": [],
   "source": [
    "diff2=_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 235,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=diff2/(1+diff1**2)**(3/S(2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 237,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{2 \\left(x^{2} + 2 y^{2}\\right) \\left|{y}\\right|}{y \\left(x^{2} + 4 y^{2}\\right)^{\\frac{3}{2}}}$"
      ],
      "text/plain": [
       "-2*(x**2 + 2*y**2)*Abs(y)/(y*(x**2 + 4*y**2)**(3/2))"
      ]
     },
     "execution_count": 237,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(expr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 273,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{\\sqrt{2}}{2}$"
      ],
      "text/plain": [
       "-sqrt(2)/2"
      ]
     },
     "execution_count": 273,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff1.subs({x:2,y:sqrt(2)})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 274,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{\\sqrt{2}}{2}$"
      ],
      "text/plain": [
       "-sqrt(2)/2"
      ]
     },
     "execution_count": 274,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff2.subs({x:2,y:sqrt(2)})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 238,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{2 \\sqrt{3}}{9}$"
      ],
      "text/plain": [
       "-2*sqrt(3)/9"
      ]
     },
     "execution_count": 238,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr.subs({x:2,y:sqrt(2)})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 239,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr_g=tan(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 240,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=diff(expr_g,x,2)/(1+(diff(expr_g,x)**2))**(3/S(2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 241,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{2 \\left(\\tan^{2}{\\left(x \\right)} + 1\\right) \\tan{\\left(x \\right)}}{\\left(\\left(\\tan^{2}{\\left(x \\right)} + 1\\right)^{2} + 1\\right)^{\\frac{3}{2}}}$"
      ],
      "text/plain": [
       "2*(tan(x)**2 + 1)*tan(x)/((tan(x)**2 + 1)**2 + 1)**(3/2)"
      ]
     },
     "execution_count": 241,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 255,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{2 \\sin{\\left(x \\right)}}{\\left(1 + \\frac{1}{\\cos^{4}{\\left(x \\right)}}\\right)^{\\frac{3}{2}} \\cos^{3}{\\left(x \\right)}}$"
      ],
      "text/plain": [
       "2*sin(x)/((1 + cos(x)**(-4))**(3/2)*cos(x)**3)"
      ]
     },
     "execution_count": 255,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(trigsimp(expr).subs(tan(x),sin(x)/cos(x)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 256,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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IiIisiI2e40cERERkaVjkSMiIiKyUCxyRERERBaKRY6IiIjIQrHIEREREVkoFjkiIiIiC8UiR0RERGShWOSIiIiILBSLHBEREZGFYpEjIiIislAsckREREQWikWOiOgmYmJioNFokJOT07Bt9uzZGDJkCHQ6ncBkREQmMkmSJNEhiIjMkSRJGDZsGCIjI/Hpp5/inXfewZo1a3Dw4EF4e3uLjkdEBKXoAERE5komk+Fvf/sbHnroIXh5eeHjjz9GQkICSxwRmQ2OyBER3cKIESNw8uRJ7N69G2PHjhUdh4ioAa+RIyJqxq5du3DmzBkYDAa4u7uLjkNE1AhH5IiIbuLYsWMYN24cli9fjq+++goODg74+uuvRcciImrAa+SIiG4gMzMTU6ZMwWuvvYYZM2YgKCgII0eOREpKCoKDg0XHIyICwBE5IqImiouLMXr0aIwZMwafffZZw/apU6eiqqoKP/zwg8B0RET/wyJHREREZKF4swMRERGRhWKRIyIiIrJQLHJEREREFopFjoiIiMhCscgRERERWSgWOSIiIiILxSJHREREZKFY5IiIiIgsFIscERERkYVikSMiIiKyUCxyRERERBbq/wGNZVOjysRXLAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<sympy.plotting.plot.Plot at 0x152082590>"
      ]
     },
     "execution_count": 256,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plot(expr,(x,0,pi/2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 258,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{2 \\left(\\tan^{2}{\\left(x \\right)} + 1\\right) \\left(3 \\tan^{6}{\\left(x \\right)} + 5 \\tan^{4}{\\left(x \\right)} - 2 \\tan^{2}{\\left(x \\right)} - 2\\right)}{\\left(\\tan^{4}{\\left(x \\right)} + 2 \\tan^{2}{\\left(x \\right)} + 2\\right)^{\\frac{5}{2}}}$"
      ],
      "text/plain": [
       "-2*(tan(x)**2 + 1)*(3*tan(x)**6 + 5*tan(x)**4 - 2*tan(x)**2 - 2)/(tan(x)**4 + 2*tan(x)**2 + 2)**(5/2)"
      ]
     },
     "execution_count": 258,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "factor(diff(expr,x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 275,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=4*(1-x)*x**3/(x**2+1)**3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 276,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{x^{3} \\cdot \\left(4 - 4 x\\right)}{\\left(x^{2} + 1\\right)^{3}}$"
      ],
      "text/plain": [
       "x**3*(4 - 4*x)/(x**2 + 1)**3"
      ]
     },
     "execution_count": 276,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 277,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{4 x^{2} \\cdot \\left(2 x^{3} - 3 x^{2} - 4 x + 3\\right)}{\\left(x^{2} + 1\\right)^{4}}$"
      ],
      "text/plain": [
       "4*x**2*(2*x**3 - 3*x**2 - 4*x + 3)/(x**2 + 1)**4"
      ]
     },
     "execution_count": 277,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "factor(diff(expr,x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 260,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{\\sqrt{3}}{12}$"
      ],
      "text/plain": [
       "sqrt(3)/12"
      ]
     },
     "execution_count": 260,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Point(0,1/S(4)).distance(Line(y-sqrt(2)*x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 261,
   "metadata": {},
   "outputs": [],
   "source": [
    "F1=Point(-sqrt(2),0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 262,
   "metadata": {},
   "outputs": [],
   "source": [
    "F2=Point(sqrt(2),0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 263,
   "metadata": {},
   "outputs": [],
   "source": [
    "P=Point(x,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 265,
   "metadata": {},
   "outputs": [],
   "source": [
    "eq=Eq(P.distance(F1)*P.distance(F2),2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 266,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sqrt{y^{2} + \\left(x - \\sqrt{2}\\right)^{2}} \\sqrt{y^{2} + \\left(x + \\sqrt{2}\\right)^{2}} = 2$"
      ],
      "text/plain": [
       "Eq(sqrt(y**2 + (x - sqrt(2))**2)*sqrt(y**2 + (x + sqrt(2))**2), 2)"
      ]
     },
     "execution_count": 266,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 267,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(y^{2} + \\left(x - \\sqrt{2}\\right)^{2}\\right) \\left(y^{2} + \\left(x + \\sqrt{2}\\right)^{2}\\right) - 4$"
      ],
      "text/plain": [
       "(y**2 + (x - sqrt(2))**2)*(y**2 + (x + sqrt(2))**2) - 4"
      ]
     },
     "execution_count": 267,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify_equation(eq,square=True,expr=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 268,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle x^{4} + 2 x^{2} y^{2} - 4 x^{2} + y^{4} + 4 y^{2}$"
      ],
      "text/plain": [
       "x**4 + 2*x**2*y**2 - 4*x**2 + y**4 + 4*y**2"
      ]
     },
     "execution_count": 268,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expand(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 269,
   "metadata": {},
   "outputs": [],
   "source": [
    "X=Binomial(\"X\",3,2/S(3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 270,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{0: 1/27, 1: 2/9, 2: 4/9, 3: 8/27}"
      ]
     },
     "execution_count": 270,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "density(X).dict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 271,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2$"
      ],
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 271,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "E(X)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## check 之前一个数列题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 278,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=n*(n+1)/3**n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 279,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 3^{- n} n \\left(n + 1\\right)$"
      ],
      "text/plain": [
       "n*(n + 1)/3**n"
      ]
     },
     "execution_count": 279,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 289,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{3^{- n} \\left(- 3 \\cdot 3^{n} + 2 n + 3\\right)}{4} - \\frac{3^{- n} \\left(- 3 \\cdot 3^{n} + n^{2} + 3 n + 3\\right)}{2}$"
      ],
      "text/plain": [
       "-(-3*3**n + 2*n + 3)/(4*3**n) - (-3*3**n + n**2 + 3*n + 3)/(2*3**n)"
      ]
     },
     "execution_count": 289,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "summation(expr,(n,1,n))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 291,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{3^{- n} \\left(3^{n + 2} - 2 n^{2} - 8 n - 9\\right)}{4}$"
      ],
      "text/plain": [
       "(3**(n + 2) - 2*n**2 - 8*n - 9)/(4*3**n)"
      ]
     },
     "execution_count": 291,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 292,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr1=n/3**n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 301,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{3^{- n} \\left(- 3 \\cdot 3^{n} + 2 n + 3\\right)}{4}$"
      ],
      "text/plain": [
       "-(-3*3**n + 2*n + 3)/(4*3**n)"
      ]
     },
     "execution_count": 301,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "summation(expr1,(n,1,n))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 302,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{3}{4} - \\frac{3^{- n} n}{2} - \\frac{3 \\cdot 3^{- n}}{4}$"
      ],
      "text/plain": [
       "3/4 - n/(2*3**n) - 3/(4*3**n)"
      ]
     },
     "execution_count": 302,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expand(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 304,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\begin{cases} \\frac{2^{n - 1} \\Gamma\\left(n + 1\\right)}{\\Gamma\\left(n\\right)} & \\text{for}\\: \\left(\\operatorname{re}{\\left(n\\right)} \\leq 1 \\wedge \\operatorname{re}{\\left(n\\right)} > 0\\right) \\vee \\operatorname{re}{\\left(n\\right)} > 1 \\\\\\sum_{k=1}^{n} k {\\binom{n}{k}} & \\text{otherwise} \\end{cases}$"
      ],
      "text/plain": [
       "Piecewise((2**(n - 1)*gamma(n + 1)/gamma(n), (re(n) > 1) | ((re(n) <= 1) & (re(n) > 0))), (Sum(k*binomial(n, k), (k, 1, n)), True))"
      ]
     },
     "execution_count": 304,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "summation(k*binomial(n,k),(k,1,n))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 孙老师的修改稿修改"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "e=Ellipse(Point(0,0),9,3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{x^{2}}{81} + \\frac{y^{2}}{9} - 1$"
      ],
      "text/plain": [
       "x**2/81 + y**2/9 - 1"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "e.equation()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "l=Line(Point(3,0),slope=k)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - k x + 3 k + y$"
      ],
      "text/plain": [
       "-k*x + 3*k + y"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "l.equation()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - 54 k^{2} x + x^{2} \\cdot \\left(9 k^{2} + 1\\right) + 81 \\left(k - 1\\right) \\left(k + 1\\right)$"
      ],
      "text/plain": [
       "-54*k**2*x + x**2*(9*k**2 + 1) + 81*(k - 1)*(k + 1)"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "line_and_quadratic(l,e)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "q=QuadraticFunction(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "x1,x2=symbols(\"x1:3\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "y1,y2=symbols(\"y1:3\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "P=Point(x1,y1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "Q=Point(x2,y2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "A=Point(-9,0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "l1=Line(A,P)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - x y_{1} + y \\left(x_{1} + 9\\right) - 9 y_{1}$"
      ],
      "text/plain": [
       "-x*y1 + y*(x1 + 9) - 9*y1"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "l1.equation()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "N=l1.arbitrary_point(t).subs(t,36/(x1+9))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{Point2D}\\left(27, \\frac{36 y_{1}}{x_{1} + 9}\\right)$"
      ],
      "text/plain": [
       "Point2D(27, 36*y1/(x1 + 9))"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "N"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "B=Point(9,0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{Point2D}\\left(18, \\frac{36 y_{1}}{x_{1} + 9}\\right)$"
      ],
      "text/plain": [
       "Point2D(18, 36*y1/(x1 + 9))"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "N-B"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{Point2D}\\left(x_{2} - 9, y_{2}\\right)$"
      ],
      "text/plain": [
       "Point2D(x2 - 9, y2)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Q-B"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{36 y_{1} \\left(x_{2} - 9\\right)}{x_{1} + 9} - 18 y_{2}$"
      ],
      "text/plain": [
       "36*y1*(x2 - 9)/(x1 + 9) - 18*y2"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(Q-B).x*(N-B).y-(N-B).x*(Q-B).y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "eq=Eq((Q-B).x*(N-B).y,(N-B).x*(Q-B).y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{36 y_{1} \\left(x_{2} - 9\\right)}{x_{1} + 9} = 18 y_{2}$"
      ],
      "text/plain": [
       "Eq(36*y1*(x2 - 9)/(x1 + 9), 18*y2)"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 36 y_{1} \\left(x_{2} - 9\\right) - 18 y_{2} \\left(x_{1} + 9\\right)$"
      ],
      "text/plain": [
       "36*y1*(x2 - 9) - 18*y2*(x1 + 9)"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify_equation(eq,fraction=True,expr=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 36 k \\left(x_{1} - 3\\right) \\left(x_{2} - 9\\right) - 18 k \\left(x_{1} + 9\\right) \\left(x_{2} - 3\\right)$"
      ],
      "text/plain": [
       "36*k*(x1 - 3)*(x2 - 9) - 18*k*(x1 + 9)*(x2 - 3)"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "_.subs({y1:k*(x1-3),y2:k*(x2-3)})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 18 k \\left(x_{1} x_{2} - 15 x_{1} - 15 x_{2} + 81\\right)$"
      ],
      "text/plain": [
       "18*k*(x1*x2 - 15*x1 - 15*x2 + 81)"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "factor(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "checks=_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 18 k \\left(- \\frac{810 k^{2}}{9 k^{2} + 1} + \\frac{81 \\left(k^{2} - 1\\right)}{9 k^{2} + 1} + 81\\right)$"
      ],
      "text/plain": [
       "18*k*(-810*k**2/(9*k**2 + 1) + 81*(k**2 - 1)/(9*k**2 + 1) + 81)"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "checks.subs({x1*x2:simplify(prod(q.roots)),x1:sum(q.roots),x2:0})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{729 k^{2}}{9 k^{2} + 1} + 81 - \\frac{81}{9 k^{2} + 1}$"
      ],
      "text/plain": [
       "-729*k**2/(9*k**2 + 1) + 81 - 81/(9*k**2 + 1)"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(expand(checks.subs({x1*x2:simplify(prod(q.roots)),x1:sum(q.roots),x2:0})/(18*k)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "A=Point(1,0,1/S(2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{Point3D}\\left(1, 0, \\frac{1}{2}\\right)$"
      ],
      "text/plain": [
       "Point3D(1, 0, 1/2)"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "B=Point(1,1/S(2),1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{Point3D}\\left(1, \\frac{1}{2}, 1\\right)$"
      ],
      "text/plain": [
       "Point3D(1, 1/2, 1)"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "B"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "C=Point(0,t,0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{Point3D}\\left(0, t, 0\\right)$"
      ],
      "text/plain": [
       "Point3D(0, t, 0)"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "C"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "p=Plane(A,B,C)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [],
   "source": [
    "l=Line(Point(0,0,0),Point(1,0,0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{Point3D}\\left(\\frac{2 t}{2 t + 1}, 0, 0\\right)$"
      ],
      "text/plain": [
       "Point3D(2*t/(2*t + 1), 0, 0)"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p.intersection(l)[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
